package com.example.sample.library.usejsoup; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.parser.Parser; import org.jsoup.select.Elements; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadAsync("http://rss.dailynews.yahoo.co.jp/fc/computer/rss.xml"); } private void loadAsync(String url) { AsyncHttpClient client = new AsyncHttpClient(); client.get(url, new AsyncHttpResponseHandler() { @Override public void onSuccess(int responseCode, Header[] headers, byte[] response) { String body = new String(response); Log.d("TEST", "body=" + body); parseRss(body); } @Override public void onFailure(int responseCode, Header[] headers, byte[] response, Throwable e) { // 省略 } }); } private void parseRss(String rssBody) { Document document = Jsoup.parse(rssBody, "", Parser.xmlParser()); List<Item> itemList = new ArrayList<Item>(); Elements items = document.select("item"); for (Element element : items) { Item item = new Item(); item.setTitle(element.select("title").first().text()); item.setUrl(element.select("link").first().text()); itemList.add(item); } showRss(itemList); } private void showRss(List<Item> itemList) { ListView listView = (ListView) findViewById(R.id.list_view); final RssItemAdapter adapter = new RssItemAdapter(this); for (Item item : itemList) { adapter.add(item); } listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Item item = adapter.getItem(position); openLink(item.getUrl()); } }); } private void openLink(String link){ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(link)); startActivity(intent); } }